//导入axios  npm install axios
import axios from "axios";
import { ElMessage } from "element-plus";
//定义一个变量,记录公共的前缀  ,  baseURL
// const baseURL = 'http://localhost:8080';
const baseURL = "/api";
const instance = axios.create({ baseURL });

import { useTokenStore } from "@/stores/token";
//添加请求拦截器

instance.interceptors.request.use(
  (config) => {
    //在发送请求之前做什么，每次请求携带token
    const tokenStore = useTokenStore();
    if (tokenStore.token) {
      config.headers.Authorization = tokenStore.token;
      console.log(tokenStore.token);
    }
    return config;
  },
  (err) => {
    //如果请求错误做什么
    return Promise.reject(err);
  },
);
//添加响应拦截器
// import { useRouter } from 'vue-router';
// const router = useRouter();
import router from "@/router";
// let isTokenExpiredNotified = false; // 添加标志位，用于记录是否已经提示过 Token 过期
instance.interceptors.response.use(
  (result) => {
    if (result.data.code === 0) {
      return result.data;
    }
    ElMessage.error(result.data.message ? result.data.message : "服务异常");
  },
  (err) => {
    // alert('服务异常');
    if (err.response.status === 401) {
      // if (!isTokenExpiredNotified) {
      //   isTokenExpiredNotified=true;// 只在第一次 Token 过期时提示
      ElMessage.error("请先登录");
      router.push("/login");
      // }
    } else {
      ElMessage.error("服务异常");
    }
    return Promise.reject(err); //异步的状态转化成失败的状态
  },
);

export default instance;
